跳到主要内容

Micro XFCE-DDS安装

设置 Micro XRCE-DDS Agent和Client

为了使 ROS 2 与 PX4 通信,uXRCE-DDS Client必须在 PX4 上运行,并连接到配套计算机 RDK X5 Module上运行的Micro XRCE-DDS Agent。

设置代理

代理可以通过多种方式安装到配套计算机上。下面我们将展示如何从源代码构建“独立”代理,并连接到在 PX4 模拟器上运行的客户端。

要设置并启动代理:

  1. 打开一个终端。

  2. 输入以下命令从源获取并构建代理:

    git clone -b v2.4.2 https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
    cd Micro-XRCE-DDS-Agent
    mkdir build
    cd build
    cmake ..
    make
    sudo make install
    sudo ldconfig /usr/local/lib/
  3. 使用连接到模拟器上运行的 uXRCE-DDS 客户端的设置启动代理:

    MicroXRCEAgent udp4 -p 8888

代理现在正在运行,但在我们启动 PX4(下一步)之前您不会看到太多内容。

信息

您可以让代理在此终端中运行!请注意,每个连接通道只允许一个代理。

启动客户端

PX4模拟器自动启动uXRCE-DDS客户端,连接到本地主机的UDP端口8888。

启动模拟器(和客户端):

  1. 在上面安装的PX4 Autopilot repo的根目录中打开一个新终端。

    • humble

    • foxy

    • 使用以下方式启动 PX4 Gazebo模拟:

      make px4_sitl gz_x500

代理和客户端现在正在运行,它们应该连接。

PX4 启动并运行时, PX4 终端会显示NuttShell/PX4 系统控制台的输出。代理连接后,输出应包含INFO创建数据写入器的消息:

...
INFO [uxrce_dds_client] synchronized with time offset 1675929429203524us
INFO [uxrce_dds_client] successfully created rt/fmu/out/failsafe_flags data writer, topic id: 83
INFO [uxrce_dds_client] successfully created rt/fmu/out/sensor_combined data writer, topic id: 168
INFO [uxrce_dds_client] successfully created rt/fmu/out/timesync_status data writer, topic id: 188
...

Micro XRCE-DDS 代理终端也应该开始显示输出,因为在 DDS 网络中创建了等效主题:

...
[1675929445.268957] info | ProxyClient.cpp | create_publisher | publisher created | client_key: 0x00000001, publisher_id: 0x0DA(3), participant_id: 0x001(1)
[1675929445.269521] info | ProxyClient.cpp | create_datawriter | datawriter created | client_key: 0x00000001, datawriter_id: 0x0DA(5), publisher_id: 0x0DA(3)
[1675929445.270412] info | ProxyClient.cpp | create_topic | topic created | client_key: 0x00000001, topic_id: 0x0DF(2), participant_id: 0x001(1)
...